home *** CD-ROM | disk | FTP | other *** search
/ CU Amiga Super CD-ROM 2 / CU Amiga Magazine's Super CD-ROM 02 (1996)(EMAP Images)(GB)[!][issue 1996-04].iso / magazine / amiga_e / amigae.july.archive / 000065_crash!kirk.safb.af.mil!BWILLS_Sat, 24 Jul 93 19:45:30 PST.msg < prev    next >
Text File  |  1993-08-31  |  17KB  |  279 lines

  1. Received: by bkhouse.cts.com (V1.16/Amiga)
  2.     id AA00000; Sat, 24 Jul 93 19:45:30 PST
  3. Received: from kirk.safb.af.mil by crash.cts.com with smtp
  4.     (Smail3.1.28.1 #15) id m0oJv94-0000d0C; Sat, 24 Jul 93 18:45 PDT
  5. Message-Id: <m0oJv94-0000d0C@crash.cts.com>
  6. Date: 24 Jul 93 20:41:00 CST
  7. From: "Barry D. Wills" <BWILLS@kirk.safb.af.mil>
  8. To: "amigae" <amigae@bkhouse.cts.com>
  9. Subject: ReadStr() Study
  10.  
  11. This archive contains 8 programs which compare ReadStr() algorithms:
  12.   ReadStr-std-1.e:  E's ReadStr() behaviour reading from stdout.
  13.   ReadStr-std-2.e:  posted readStr() behaviour reading from sdtout.
  14.   ReadStr-std-3.e:  my readStr() behaviour reading from stdout.
  15.   rwt1.e:  read/write ascii file, E's ReadStr().
  16.   rwt2.e:  read/write ascii file, posted readStr().
  17.   rwt3.e:  read/write ascii file, my readStr() without using enhancement.
  18.   rwt4.e:  read/write ascii file, my readStr() using enhancement.
  19.   rwt5.e:  read/write ascii file, my buffered readStr() (from EPP.)
  20.  
  21. Well, I couldn't resist the temptation.  When I saw the ReadStr() routine
  22. posted with such a bold claim (8x faster) I had give it the acid test.  It
  23. is indeed very fast.  But I found some surprising facts.  First, it's close
  24. but not completely compatible with E's ReadStr().  The only real difference
  25. is how it handled input strings that are longer than the target string.  This
  26. is most evident in the test ReadStr-std-2.e, reading from stdout.  I saw some
  27. redundant function calls and variable assignments, so I modified it, making
  28. the routine faster.  I think it behaves exactly like E's ReadStr() now.  My
  29. buffered readStr() from EPP kicked everyone's butt, which surprised the heck
  30. out of me since I was hoping to get a faster routine from all this! :-)
  31.  
  32. What it all boils down to is:  I tested these in ram on E's Reference.doc,
  33. about 93k, with a 68030 and a 68000.  Here are the results:
  34.  
  35.             030  ticks    000  ticks
  36.             ----------    ----------
  37.   rwt1.e         2934          9531  (3 1/3 minutes)
  38.   rwt2.e          408          1869
  39.   rwt3.e          399          1813
  40.   rwt4.e          397          1800
  41.   rwt5.e          159           713
  42.  
  43. Note 1:  I almost always want to get the StrLen() of a read string, so I
  44. modified my routine to return the length of the string since it already knows
  45. it.  -1 still means EOF.
  46.  
  47. Note 2:  I turned the buffered read string stuff into a PMODULE if anyone
  48. (KS1.3 people!) is interested.
  49.  
  50. Note 3:  the 3 stdout tests run forever, so you might want to fix 'em if you
  51. plan on using your cli for anything else.
  52.  
  53. Think that's about it.
  54. -- Barry
  55.  
  56. begin 644 RAM:ReadStr-Study.lha
  57. M)0DM;&@U+6H```!O````09_X&@``#U)E8613='(M<W1D+3$N945I`%M2=K&GR
  58. M`X]\`?P[4%@:!H.#,%M=D,7):@P%8""P&!K@O=O';G0``RG?#W8/FO$@RA0##
  59. M76@AEUT'81PA<_PA,?-WIPAOKM$YAA'M]_'2"H%8JZ)`2%/@][0Q9=\RSDOEY
  60. MJ(<]O^XI,.?2H"5&+6QH-2T-`0``VP$``$&?^!H```]296%D4W1R+7-T9"TR0
  61. M+F6Z'P#T6I;9IN*\[X`_<:H*:W@W"FF#%9-4+5Q%2\%M,-&)DVR@QH;;QQ_DM
  62. MJTW!>/:@*+$D]LT=.PX=KO7W%ZZXYZ)FU#!55<^.#WM5=7\*@'+G98K!]P",$
  63. MZ!R^\5+@"[?PNI5]AD>6R<Y=C>B(R2.]C4`).VU?3V22Q*8?B,TF7[(@27,</
  64. M\R#O"YV`:'QXB'20`"=2O?JKPO-,B'_+0Z7X!,A$YZ/752E)Y:'VHN4D_BI`G
  65. M3]*6V(LD0\.T[%&L\K+O$:A-+!9Y8Y$,O[0&]K#QB-H<+H;D\AF66?FJVX/9O
  66. MY)6-_?Q$0GH3)+YER;M<A:.RS\'EXUW\\2S5^X%W86XJ0'G5FX+;-EO](&TY\
  67. MFYN`)8,M;&@U+34!```H`@``09_X&@``#U)E8613='(M<W1D+3,N9>.\`2);?
  68. MEMFDX=SG@#]QA6!E>#<.D=PI3)(HZ`,>!=-!A529:26TDV\<OZ5%TTFH"UM*;
  69. M/5KCV:3A^NU>,O7WGO>?7G"D55T,4(.=2:^B(1PNX\4*,]CQ".QL2QQ5;U!W4
  70. MUB=PR`PL2&<ZF"QA(++E)64Z`MBK$\B$]$)Y,Y^0Q8W@(SR#A^,0N%H#55]PR
  71. MA%O1)673#TS"AT,&#\'$6VFNO_Q_!):(:EM#RIOZ1@`?WI?A&1H&61P3U$64L
  72. MI@*$(^O"E%`YKB<%B&4T(UR24'I^<^R><\U)KRSEH;FAOAKED*L?30?^NWIGS
  73. M>]^\?[8%!6!3H/,7#;SKJS4J:.61XOM^FG8D=J;K46<8#=LF+&[S)@%%,\LWP
  74. ML53;HE+;??9:V5VW,+$9O'<MJK&(D$#Z\V]=^&EF<Y7G,'5X'#4M;&@U+00&`
  75. M``"9%```#I_X&@``!G)W=#$N91P9!(1KN]&VUEO._@#_XXW:\[*"!"R()4L<N
  76. M-!2R522F$:XR=CZ:<JXVQOGMI\<O_^[N;<<EEN+MEE1&U0CP'D$@\AXCX0GP9
  77. M(.X>]6VVW-P;P93Z3Q^<),X/VIPZ*#Q(/&&,T$.1$S;@9Z(\R#R1O!O<#37);
  78. MBN\V!\+4,D_`/]M--8OK^U_CRA.CS3H@S=.75*9H`1)*Z&:2B-#3^&ZHCI*SE
  79. M(\TLTF:_'GD67>@\YT3AX0P8L/V#[BBID&A$!#`@P^NF40IHH)9]P6.#29AS6
  80. M6J[K][6J.*::#4)-RY<89<74P3HH<"")<,2;6YU(R.C3T&FQ9^43F<+@6Z1)O
  81. MX<=$<91'N!X.$!BMS$U")`11-&"#Z33#&+/P21@41P_/\)L,>LT$YBD=,;-14
  82. M-.?T&$#%$]W&R5;T:B8K(4.AFH8.+#=#]%:DNDE(M>VC2G8_AYN0'\?FPXL+=
  83. MZGJ+UY'^1IK'Q7\CZ_4+]X!HK)_1HON!AOX&FN7'BXRB*>,Z`;1H-D7%E<@-]
  84. M<8'&A8O(?3+%J"$V:*"8P"8@J1GH@F/!T1&"">PU)L<JB5%$Y0Q(S%MQ1BCGB
  85. M-!&'0,/M!LW2J#Y4:DTZ1Y4</)JC>[80JAVQNWAA2'A4[U85*`(/;*GTGV:32
  86. M%MC]E$AD#):)]'ZP,=""&&9P4(58,9O3@/.AT6YTREXE7@H&2S3_[?"1:7EQV
  87. MR2Z@;I,_(2)\KH<6#`1"Q!*.(^FLIUO&YV/G6O>M^-H'?#AW0)2_%D"12_PHS
  88. M55`*)+0DY0,CX-.&Q:)J<B6[>MO$B$G8B/QB4X79-,WJ&(Y#G-@_VO)X!>0;Z
  89. M#<-V_>8]BE/4^0IFE\3,L(LPA,>$[M>-I<";,>_5AZ%C]@#?2QW7CN)V?2#;E
  90. M>2_^#^*]U8]7`WMR;)D[V+&!TUI$Q-@YF/#8I_(?RO,SA%80DD8Z-SM+UC]9^
  91. M6\.HFA!MR#>0<J)%!1C:+/IT1KBFS-LY33M3'2=F0R8&SPNIT5LCJ.5V8Q3<V
  92. MJC6O')7I^ZI&L(>Z5_W8K]T+H@,A``;6J7&E4.<TI%B<5K$,6B!F,$H5#X0((
  93. M'0#$>/\J#SZ!(LTD:)I(BTITXFA1F;0>*$<7]\H%'S]FHQM,#-,`Z6AS/'G5#
  94. MDFDCBU;R=-;SBD9?O=9Y3K?3&@\)0[?P9'VK(2^N<.M%>5Y95\:&-AMKHCOTG
  95. MRQ50=]+%^GV7):PA%06>^^'RV[=O:4U4Y;0*KX67Q^NHVSWWZ9S*]_!8SSGLH
  96. MKFV@:T)2PK$,H`XU4R-.E!E@#MDP.RFY*+LIL31\FG)?!@[IJ'AUS*V,SUQ"]
  97. MK(O7(]H/8H5<="X4\4^2<^H9?$_A"U:33\D.UMXO(F)X?<E*L3W</UZO*<(J[
  98. M).1+H3CJR%N)W`QOY>;'A!/J'`JE>DNF-+(,9FZL[RZ<T2(@B4BJN1ZL-E*$J
  99. M-82&?MPM[,S;>[0T-6RJ;(9_VR]0SUR_J]-_:^XB:JQU^BS%==S?:8#IB*#J^
  100. MCCQS'0:\#=KGC/#<YQS(*CLGR4N4^1'*?`ISW.>>T[9RPS[/;WZCMA12[VX,/
  101. M2P[THS1]LF47`=K]M^I3M;)O,*,JL&"UOKUI]R6VU$L1+C7N4>Z2M1I7)>N2#
  102. MM:P&/]2)'TYX[3NMD'0K8'LV\*Z*TU5@W_[;ZL@2MNIX1V\%UMBPJ,VZLVW%N
  103. MUT2W1P)QC`&&2,W\;=K-W6S<'_7[XYL_;N(_[<,W\UL:?OG7@4_G<7_FXG_=L
  104. MP_?M<51*O:[[Z*F4(=_&I_>A'JV,,ZN-7,JZ^/?]3./?_?'7[^`=\.`A3R6]U
  105. MNT:SJT+PRLA/XA^#GP/KPR9]#H_V1T"Z5*=@+/@F?H33<(L@F*4PG=J;THX7(
  106. MI*$#C9PO^.]?P/K@PWGT5DQ8:<YXC/(]1%6+!=25.5_$:4]&6VZ%J9?QGGR.G
  107. M6EZ]_$)>SXU,DX+/N51P7F"(03<NDV>`ES.XRR+%0A8X<TJTJ,#DIBIAK,N8!
  108. M!QQ23I2NOD:TA)'$^IH(^8:&1@Z_]_&_RY50`%_T\7"Q!)#R;1$C*2_5F-*7;
  109. MR%`UIK^(7244Z7<,B`-')1Y]`:3:9)M3RW)L8-<X@!QX+6QH-2V3!@``^A4`6
  110. M``Z?^!H```9R=W0R+F5..`3Q<Y?1MQ;+8[\`?DC`C=KLLI^N$*H@E2QPZ?J63
  111. M2J20X1;2IV/9TU5QMC>SK8>./WV[NMN.2VWB]W+E1'=4(P#$$@Q#"/"$\"#NX
  112. M'O5MMMS;NT&(^<\7I"/*$D<R#0!*9^#"B5MP,NB+(@\<5<-K=::XK]K'=>"MZ
  113. M!'-NC_:S35_ZO_O<.()D<\R'\G3BTR&:`$1R.ADCT1(:>O6E$<Y69'/)+'DNX
  114. M198UEWJ/,=$P;X7;][ZQ]Q14I,-OA`^@P^N>00IH7Y)NT+$_G,PYI5=IZWJ5=
  115. M'!+*_I$FX\6`,5_L8)T4.!!$N&)-J<Z<9%HS]!I;^7C$YF"R%B<2>#!HBB*("
  116. M5D-S>`8HXR:A$8(T2Q`@^<THQ=R[L<0%$</R_";'B#(_,8I$RFR:)9C^HP@87
  117. M8:_B;)5O1I)BL)0Z&9Y@X+UH/S5J2Z.0BVOL&E.QZ]CX@>P<]Z_>>4]1>O$];
  118. MQ--8."YA>7ZA<M@-%9/Z-%]D+URZTUQX+_"413Q'0#:,QL*XLKD!JC`XT+%X>
  119. M3YY(=(0&R0ORF`3$%2,]3\IW^B$P/S5&I-CB42HT3%#$C,6W%&*.<C\0=`P^;
  120. MS&R=*H/E1J33I'E1Q735'7\(0JAVQNZXPI#?4[U(5*`(/8*GTGV:3%MC]E$A6
  121. MD#)-$V;](&.@_!!*X*$*L&(W5=/,AT6YSR%XE7@H&2S3_[>\1:7EPQR:0;G,`
  122. M^0D3S.AP7;I$+$$HXBZ:2G4\;G>^=*][GXV`=L-[M@2E^*H$BE_A0JJ`4*6A`
  123. M)R@9'P:<-:T34Y"MV]3>)$).Q$??"IPN^:9NL8CD.<UC_:\FX+R#8;>M7+;'/
  124. ML4IZ'R%,SOB9EA%6$)CPG=IQM+@35CW[,/0L?K`;:6.[L=Q.SU`VWAN?<]?M)
  125. M]F/5P-KM39,G;OX`.FM(F)J',QX:U/R'YJ[,X16$))&.C9\"]8_45UQU":$&+
  126. M[4'70<J)%!1C:+/IT1KBFS-LY/3M/'29F0R4&SP.IT5LCJ.5V4Q3<HC6O')3"
  127. MI^[)&L(?&5_V7[EH+0@,)``;6J7&E4.8Y"+$XK6(8M$#,8)0J'P?0.@&$\7X?
  128. M:#S9A(LD<2)8X2TISXFA1F3,>&`<7]PH%'R]^HQM,#,[XZ6AS/'F5DFCBAT[F
  129. M2=-==Q2,N6^X\GUOIC0>`H=O7<+S54)?7.'4BN:NLJ^-#&LVU41W)Y8JH.^AW
  130. MB_3[+DM40BH*O?;#_UBQ8V%-%.6P"J^%E\?KJ-J]]N><RO?<J9YSV5S;`-*$Q
  131. MG85B&4`<:H9&?2@RP!VJ8'?3<E%U4V)H^33DO@P>,U#P:IE:V9[HA4D7KD>T"
  132. M'L4*N.A9*>*?).?4,7G>O!6K)I^2':V<7D3$\'N2E&)[Q'ZM7D^$5$?$ET)A]
  133. MU9"W$S@8'L6/!>!/J&ZJE><NE-)&,9FZ,[RZ<T1H?A4BJ.1ZL-B*$-(2";PP]
  134. MMZ\S;?;H:&K95-D$WZY>H)J9?T>FWL?<1-%8Z_19BNNYOP,!TQ%!U1QZ)3H-]
  135. M;!NMRQ'@L\HYD%1V3Y*7*?(CE/@4Y[/+-6=JY89]?M[]1VLHG=[M#$L/)*,TE
  136. M?:YE%P':?;;H4[6N;S"C$K!@M;ZM:?BEME1+$2XU[E'VR5H-*9+TR5I6`Q_H]
  137. M1(^G+%6=U,@Z%+`]^WA716EHL&_[;?1D"5MU.7;]+K;%A49MU9MN+KHENC?3#
  138. MC&`+T<1OWV[5;NM>X/^?WQS9^W<1_NX9OS6!I^^9>!3^-Q?][B?\W#^6UQ5$9
  139. MJ]KOOHJ90AY<:G]J$>S8PSJXT<RKNX]_TLX]_]<=?RX!WPX"$_);V;1JNK0O@
  140. M#*SXJ+,_%!".([HT9<II^YQT:1P/NA,?\1%&CRV;?`I-I$;]G`)[L.G2^#%XN
  141. MG^MM:))%$?[]E)FJ&5R(EFPPK)R*V'*(>83&Z9TON-I.1H]\#;<WG'0OV[>%F
  142. M[%S\./!@>O8E6)K:3P-=4)Q9$FB&X;6W:N)<+[[]G%@QO4\C51!R)4/-OV9_$
  143. M@M2+%Q994#YQ^)!NO+BAES.C_8QBD4%BEVSX?/Y_,3)"+()?D,)W6EZD?+7C<
  144. MT(%L+SWHMW+KRZ<F\N:DF+.'E/":NCK(JOW;22IRGXXZ?K?V!@#1\DMR2FZB^
  145. MU;A\F]S5E\%WSB=LH6)4"U=,F5ZZ"$$XJ9VW2869QF(B_H0L<4:W&8<TIBAD,
  146. MJM;(!PPQS)2NKG-SA(W$^IGXL8V_C+Q[[>%[CQ*@8,"TRGJ020\>P1&R['KR2
  147. M&D+Y8X<'*_C?4E$^\.]&@#11Z/3F#.;/'+IKK<FI@UVD`!QM+6QH-2W1!@``]
  148. MO!8```Z?^!H```9R=W0S+F4Y0`47:[O1MM9;SOX`_I'@C=KKLQD"%D02I8X:!
  149. M"ECJDE,(UI4['TTY5QN#?2VSXY?_]W<VXY+;<KC&5$8J$>`\@)8\9XCX0GP(C
  150. M.X;I&VVY=W:#$?,>3U!+D#-I#H--.>60LLQH8L*)FW'0Z3HRRZ$!HG,K91HFU
  151. MD-$$Z)B&MK=:$CQFD]2,H=$,>@SP?U^$CM<$%OBO/A8BEGW1^V&FH/I^M_?QH
  152. M":^6=$./GQ:<YF@!$N=T,<NB1#3]^VH#H"S(Y<\TN.[)DE6'=!YSHG#S!>@O;
  153. M_4.<25,@5!\P10H,.7-G'5-'#GG[-62',9@S4:[;]S4:-Z::'2(-PXL`8H.M!
  154. M`G6B6`RU#$&U*=1N2:,W,::#)PB,SA:"S1LGBP:))";9:#<\@"V[B)*$2@3B:
  155. M@0?,:87-9-T7=DT?O;`(L>0,<+'C8]`OMZ##HQQO>`LDV\VDD*PDSH8-#!O7_
  156. M[8?F;4ATN<@U[N?8_?XN`'\'+?@OOJ6HLO`_P--8-Z[A?7E"[<#"J&IMP6`7D
  157. M[MYIKAP0;Y-%/(=`-HRFPK:RMP&IL#A1/X3YL\>D(C8XX9C`(B"G&=$,QX>:O
  158. M,P0SUBI)CB4"HT3DS$A-4=BAG'#(',+/LIL?.ICY0:DDZ=\H.'DQ1O?E'B`,B
  159. M3MX64AYE*]5JI(!:]DH?279I+6V+V32&,,SZ)\OZ,,="&**9P2(48,ANF\>=X
  160. M#HISFSEA*/!6F1S3_V_(0:6+?ESZ0;H$_21)Y'0WKUX@%A"4,2<]03J6-SN7_
  161. M.H^]J\;-';#R=C"4KQ6PD2O[X%5,"C2D)*4#&^##AK.B8G(UJWJ3Q.PD;'8^E
  162. M^-2A=STS=0M'+><U[_XK)N"L@R&W[=VXQ;%&>E<A+-"XF9(171"8L)W:J;2VH
  163. M$UT]^NCT*'Z]#;2AW;3N)6>D&V\-W[GX+G73U<#:["V2)W(,`'3&D2$U[S*>S
  164. M&LS^D_(\RN$4A"01BHVN\/7OZ@MX;=.A!NPAO(.4$BM46VBCZ;$:VILK;.406
  165. M[4-TG94,F!L\3J;%;&ZC5=F,3W*6UKIR56?NMQK`'P=?]D%VV%L=#"6@#:S2S
  166. MXTJ!SBSD&)I6L(Q6(&4P294."%`V`8SR?AH//E$"QRR(FEC*RG12:$F8\IXXD
  167. MAI?W284?)W6C&TL,S0C9:&L\>=52:62/3M)LUO.*)EVYVCE%M]+:#Q$SM^]A;
  168. M?:K9+ZWPZB5R/+"OU@8UBVJ".[0[%4!WSL/Z<RW+5@(F"O/MAY;-FSL":8<MC
  169. MFBJ>%D\?KB-KS[=#YE9]RM'G/9'-LT:B)0@K",K0<:I1&BR@R0!VMX'=#<DEW
  170. MUPV)@^3#DO@P>#U#Q:GE:T9[6A5`7K<>T'L,*N.A:)^*<2:^H8O._?"Q83#\Z
  171. MG7:V<7D1$\7M*E-)[PW]5KRBB*B7@2J$XVLA3B=P,#^+BP7P3E#=5"O0'3&S+
  172. MRBV9NFN\N'-$J(8U$JGD>KUL1,AJU(I^^BWKK-M]EAH8ME0V13_M5ZBGJ=_3G
  173. MDV]B[CLTQCKR+$5QW-]X@-F(F.J&/1,=!K@-V..0\5KC&L@INR<2CRG$0RG`)
  174. M3Y[7'/8=KY89]>;W6CM810KW9K$</$J,L?:WE%P':LVW29VM;WF!&)5#!9WUA
  175. M6T_`K;(B6$EQKVF/L<K2*5.7J<K4<!;_221R<<EAW4B#H5(#W7>%=%::F0;_#
  176. M[M]-0)5W4\2^Z"5%1EW5EVXNNB5Z.%-,8`ORR&_B[M7>ZUW@P_OO)_"\1_UXC
  177. M9OY+(P_?*N@I_-XO_+Q/^WA_&ZXJ"5=UWW05,@0\>-3^\"/7<89U<:>95V\>4
  178. M_Z&<>_X<=?QX!WOX"%');V71J^K0NC*OQ@`-Y89(HQI'\VC)D-,GP)ELY8IP7
  179. MR32Y@?L3A@9XRTO"PJGF0N>:=;O2\&`(2KQDZ^(:5+?FTC1I=(`X(>H>+%+':
  180. M(F7,LQ*%A5A;8?@4(EM$=>M'V$E,1`DM/#ID2I#`"PFK798Z0@2ASF$QN>DI#
  181. M;C:C7N*!2O^.A!<N87\7+O\6#`_?Q*ED46A=\(-R4=4IC;6;J29R5=7]B/K86
  182. M*">#L7&(&+5/&(3K=O<)6R07$L=+1W"F1O><?%/7GUMCR971^RBQLFM+:JGQW
  183. M*'S)8,.V6I!G,(W8FZ4>5X?)X"R2^_Z+EV\^ME3>3+4#%8@R'C,\CJ(*@O6T$
  184. MA3E7CZZ.PY9%NM'E40],QNDKB@?%\?)87PNO.(W3#F28#R!Z'++NBEL$HKI)S
  185. M_>)!9W&4Y8!\M"K>)[[C*:"2Q2B5=S8`WXY9TE75S^*-25Q.4T,G$,[@LI?^P
  186. MW??X<2F&"PM+JJR$G7EV;$K(:>K&;.@O,OVF>/:2$4<""_*@#22Z/5E#,;-+,
  187. M-I>6I-:!KFE`')LM;&@U+=(&``#&%@``#I_X&@``!G)W=#0N99$*!1MKE[&W1
  188. M%EL=^`/TC`C=KLLX`$+D02I8X=!2R522G".M*G8]G357&V-Z[;/'+_]W=;<<X
  189. MEMO*\<<J(XJ$8!B`EQAF$>$)X$'8=TC;;<N[M!D/H/%Z0CS!HTAT&EF/'$66:
  190. M4S\&-$K;CH=)T9PGF,K61/+$:`)D2D+C]M;K0D>$T7I$&Z'X9S60_KX2.UP8"
  191. M;G%?>"Q!'-NC^V&FL/T_6]OY!-W+,A_+SY-,AF@!$<CH98YXD-/8+B@.@+,C@
  192. MEDECRWHLT:P[H/,=$P>4+^'!]0YQ)4J!43RA`^@PY=$@ZIH7Y)NS5B?T&8,UL
  193. M&NX]=U&C>EE?TB#<.3$&3#UH$ZT2P&6H8@VI3J-R*?1S&EPYN$1F8+86J-D\U
  194. M&*>*(FWVPW/(`MNXB2A$8$XT$'T&E%SN;=%W9-'[VP"+'B#*^QY.6<7V]!ATW
  195. M88;/@+)-O-I)"L9,Z�P;V"X'YFU(='(0;9[GV/8.+@![%RX,.!Y2U%EX'NU
  196. M!IK%O7L;R\H7KH8U0VMN"P#!>OM-<.+#ODT4\1T`VC.;&MK*W`:FP.%$_C/HE
  197. MDATA`;+"_*8!$04XSH?E._S0F!^:L5),<B@5$\Q,Q(35'8H9ROQ!S"S[.;+SF
  198. MJ8^4&I).G?*#BRF*.S^4>(`Q.[(LI#RJ5ZK520"U[10^DNS26ML7LFD,89)/(
  199. M-G_1ACH/P02N"1"C!B-TWSS(=%.=$A82CP5ID<T_]OR$&EBWXY-(-T"?H(D\4
  200. MCH;U^^0"PA*&(N>H)U+&YW+G4?>U>-FCMAY.QA*5XK82)7]T"JF!0I2$E*!C;
  201. M?!APUG1,3D*U;U)XG82-CL??"I0NYZ9NH6CEO.:]_\5DW!609#<%R]=8MBC/^
  202. M2N0EFA<3,D(KHA,6$[M5-I;":Z>_71Z%#]>AMI0[MIW$K/2#;>.]]SV&[UT]9
  203. M7`VNPMDB=W#B`Z8TB0FO>93PUF?T'Y++*X12$)!&*C;[P]>_J"[(VZ9T&["'E
  204. M90<H)%:HMM%'TV(UM396V<HAVH;I,RH9*#9X'4V*V-U&J[*8GN4MK73DJL_=W
  205. M;C6`/@Z_[,-ZX%P=#&6@#:S2XTJ!SBD(,32M81BL0,I@DRH<#Z!L`PGB_"<\;
  206. MV<0++'$B6.$K*=%)H29ESGA@&E_>)A1\W=:,;2PS0^-EH:SQYE5)HXH=.TFS&
  207. M79<43+UWM'*+;Z6T'@)G;U_&\U6R7U/AU$KDLK"OU@8UBVJ".]0[%4!WSL/ZE
  208. M<RW+5@(F"O/MA\5JU:V!-,.6S15/"R>/U1&UY]NA\RL^Y6CSGKCFV:-1$H059
  209. MA&5H.-4HC1909(`[6\#NAN22ZX;$P?)AR7P8/!ZAX-3RM:,]K0J@+U./:#UFL
  210. M%7'0MD_%.)-?4,GF>P!8L)A^3KM;.+R(B>#V%2FD]X;^JUY11%1'P)5"8;60T
  211. MIQ,X&)[)Q8L`)RANJA7H#I321BV9NFN\N'-$:'X5$JGD>KULA,AJU()N^BWK^
  212. MK-M]EAH8ME0V03?M5Z@FJ=_3DV]B[CLTQCKR+$5QW-]X@-F(F.J&//*=!KH-Z
  213. MV..(\%OC&L@INR<2CRG$0RG`3Y[?'-8=KY89]>;VVCM810KW9K$</$J,L?:WX
  214. ME%P':LVW29VM;WF!&15#!9WU6T_`K;(B6$EQKV&/L<K2*5.7J<K4<!;_221R0
  215. M<<5AW4B#H5(#W7>%=%:6F0;_[M]-0)5W4\"^Z(5%1EW5EVXNNB5Z-]-,8`P1,
  216. MQ&_B[M7>ZUW@P_OO)^^\1_UX9OY+0P_?*N@I_-XO_+Q/^WA_&ZXJ"5=UWVP5>
  217. M,@0\>-3^\"/7<89U<:>95V\>_Z&<>_W\=?QX!WNX"%');V71J^K0NC*OQ@`-4
  218. MYWXH(1I'\T^;,:5/@3+ARQ3!FECT`]8F#$SQEI>%A5/,A<\TRW>EX,`0E7C)^
  219. MU\0TJ6_-I&C2Z0!P/]0\6*.&),N99B4+&K"VP_`H1+:(Z]:/L)*8B!):>'3$$
  220. ME2&`%A-6NTQTA`E#G,9C<])2W&U&O<4"E?\=##=NXWLG+O\6+$]@R*ED46A=?
  221. M\(-R4=4IC;6;J29R5=7]B/K8*">#L7&(&+5/&(3K=O<)6R07$L=+1W"F1O>84
  222. M?%/7WEMCS9W1_8Q8VZ$)-=6UA/B4_F2PD=XM3#(81ZQ+TH^.S'.@63X'O/=O"
  223. M7WELM;S9Z@8K$>8\)K*.H@K#?N)"G*O'W4=A^T+>*/*J!Z)3=)7%P^#X5>5?#
  224. MCD1R6%\,;S"1!\!<1HHB%)0IG'*74KNL%LK5AE._#.A>J3Z7&4VDE:E&:[H`+
  225. M!OPQS))FKH!4:D;B<IGXN(9YA9@]]N^]PY%,3%B27:5D).O'LV(V0Y]64TB"S
  226. M\S3;9X^1(11P*L$:`-%'/Z<X:#:(Y=-E:DUH&N:\'*8M;&@U+:`(``#2'```"
  227. M#I_X&@``!G)W=#4N99DJ!C5SM[6VV\MQST`^`W`1+:::EHN$$$5`D;*L6":3,
  228. M"2>FVD>@+)^FOV%$K$E-M;IQ][W__))*23;T=NH>&M8PHVXN`VX-`O"W1#>@K
  229. MC=AW61MMN<.\&1.=,72$>4)LR`Z-.7*B1$`2(>@"6:0LO+IB?F3'$&F4<E,0K
  230. M.\O+9"6%/3FFAU!O<+0@?/'`G*D<_,._#+'(8">Z$PIFU6@\OA`[7)AX^:^ZJ
  231. M%B".7A']L--8?7^QWBR"17PEF>?^.35H0`"+_6B&.+IE":,#R`DCTS)B1+:(7
  232. M$`./HL@_'IBF:=P<:@+.#43?#1)&_>BRQ]X0F3G1)M"'4F5,TH>@+^'!]0^X,
  233. MC6283O]`0/3('USZ!Q40O:)=V+$]G0S<TD;.-?`:<;MVHJO5)(]J$#<N3$&35
  234. M#M,2RT21$+1..FJ1E/F1:<_0B3#EY1W,H7`MSY*8,6F*(EWW`X/,2$>8C((FJ
  235. M=,D2R>CRY>$6"%(1[_AVPL0/O2H)E*1#^F25/4@<&&&UX[8Q;T:B(K&26A:8F
  236. M0'JP<8?V%IZZ/06MM=S*#N#FY`=Q?#!AP.J.HO7D=Y&FL7JO8W5^H7KH8U-V-
  237. MMN"@#!>OKUM.@P(ZY\VE7AL9$W8(`'.6L$SL6S<69QO3/*9K87/[X](1($](B
  238. MXD+=_E4YRAY_,&5,*@)P[W!P!HT]$*7_0'`SXT)Y<RV5>U"_HN!F>B@A,-$"R
  239. MPU"+\SPJ+CT(B$;,2P+^>-/\T;@2H")BT:9O6<!8)2TW>]N`9WNR^)ZWT1=,@
  240. MU1**`@H9Y'NP4.-YQ;!Z$!!J%Q)+[$<A0<\B>H7.*#HWN$P(/PLKJA(2D:0P>
  241. M;2A4Q3!"8SM.+(FHL*C2$"/B*YD"FA,H=:1*<5HB2G<9T.TQZ$)BZ"+4POMJL
  242. M+E,0F'4,Z`)HCE_HIX@(CLF![J>3"]T"II_,](1OZP.($K@6"A['7#J5&0%SG
  243. M-3SG!^/Q.+\N+#Q%`A3$F8&Q9ZQK@:K@N50/'";KQISZ!CV0(?A>D0<BQ4&C%
  244. MJ>D29B/2U[4GC<BM+-IE9)@5(L5N7WHB8+?S(?^*S'&)B3P9YY1-+1QP;7]9>
  245. M&(`PN[0P!29K)YRG%,`%CVR281[-&H%A]U(,T:9<W]T&60>@@D<$"%&=B1UW?
  246. MTRS61+G/H+Q*/8K#(9G_V_,6M+RXH]&H&Y]G[B!//9#U7[Y:%@"5N(OC3J:C1
  247. MC<[CSI'O:?&S!WP\VY!)GQ6@D0O]["JD!0F4)&4#$^#$KUC0XI4*S;J+P\@]*
  248. MV.1_&%1A=RTR<N;+.<UY_V')P"<@QNL''>NL.Q0GH/(0R1XFZMDKF]_Y=(\'L
  249. M5D,=6KFV,1>FS302+2O70@[9T@F[KP-\S<[:!BXJ5"WCO?P=PW=M`^X&]N#9V
  250. M$G=PX@2;D!$37G,H&M8G]R>>TRD,)U8](PT;GRUZ\^K5VAJ=](QC=H#M3))G;
  251. M)6**NQ)\Z6U:4V4<#D[8DZ=)64&T@-I@LG2ZL3J-$.<BRFF79/@HIR-JC6:'*
  252. MQ5?^W#>XP&>Z3/^<7-5BEQI3-7-H@5)S1.!BC6LB'DBH?!Z89)L*8OY:4RYA?
  253. MT3\<4TD<)3'YX=!2P,R88!B&WB04G+W4VS9H,SO#),&6R,N<XND<4.K>.F5&3
  254. M9,8,O7>W>3U!)IH3`2.W;^-UJM$O>N&H%<]I>J_!AC7MJF([TZL5,'>E@_/VK
  255. M6I:O0B(*_??#Y[=NWLU-#.6S!5`O9`Q[VC:_??G7,KWX*R><\&YMF#2!)R%8$
  256. M!E8#C5!(SRGF.`6:U@=S-Q@NMFPV/C9R77%>*U$P5+*UDSVI"IT7>H]H/`0JI
  257. MM&KA+Q/R.2&&3V.X`L6#9^/':V64953,'VA2B$]XY]4PJ>"+-'R&:$HS`!+BX
  258. M5P,3N3FQ8`/U#A4RO/KI$:(Q3,W1'>6SG-',]"H%46LZ\;(2(:<2"7Y06]<9B
  259. MMO=(:%K93-D$O^(O4$M*OZ/3?V'N.30V.OT7L5MW-_+8#)B)#JMQ[9$S(N@WO
  260. M8]\28+GO&,@I.Q^2AR?D6Y/P)<]SWRV+-=O:G7[?=*.UZB<WMV,0P\@HR1]KG
  261. M645#73[;]`G:UK>9J,BH&"QO5+3\0ML:)8"7&OM$>Y2M&TI4O2I6D8"G^@$CW
  262. MZ>^*Q9J)"R%)`]TWA5\!)0X-_^;?1$"5-U27%U%P<!05&3=63;BX/LIT;QPQ&
  263. M@#`5]3_J;M7.ZUS@_^??A&S^R<1^DX9OZ+8L_?K7`4_W.+_.<3_Z</Y37%,2Q
  264. MKFN_<Q4QA#RIJ?Q81VS&&6W]%95VT]_TLI[_^TZ_E0'??0(3U+>R:-7;;+MH[
  265. M=W&OA^5M"L&@W(7'+409ZN.HL[.1S5Q/<\^:CAJ6:A-4]$>'[V\47<`Q;:IQF
  266. M&<1(S*5M?;[+P\X&D7;58J^.@8\B6Q^EFQ5Q5"QI5A$%,1<5`HX[67-9K+36E
  267. M&V/."'JP)Z5O%SYJ18YMM=J%QF8[^_SD-/-X9W/1;TL^VE>FG-HKB:M76BVL&
  268. M^R^734,`U0"7N+>ROEUD[4J[W#L1-%B=&ZSF(Y7`&F<)\B_=IYJ!LF!5$]7R0
  269. MB3$P8T3&SPH'"I)QKN-]3`^XTF%N/_-B/7PXY\D<3<35<%GV#SH=]U;6V7-&7
  270. M*^2FLUMU!+9"$I+:^6L/G!_/;9#W.YN,/0$Y='T?6A^9=B%)!:GYD`4+?-YU4
  271. M8>QOD^"8HU3BM)LYC2X'GMD+O2+]Z^0;9S$Z<IC\B7/E<&#JACNW5RKU"VOEN
  272. MS%;(G(@&=A@^=.C+SPCSCXTD$G7-]%H8-@TA.!WVW13>LMLN:G2E1,'SU4W8Y
  273. M6IPW^-FI)TL]871B"&J>F?GX*:W9"Q1#:]TB.LJ9X/U?.KFGU=<=SV%UJ!P%,
  274. MVX3<!GA@C6<2N.4O+'3P@V:ZB6NXQCM3&<Y"UTV8!Q0QCT/S9EE7@B"*KHCBN
  275. MA0]%S#)>%AYW]W$[RY*CK.VXV@J\;/%>6L*%*6['T:#[%ZXSI:SU$]51@CF!-
  276. 3$4>GIS!G1GCDU6AJG7-I$K<)``J\7
  277. ``
  278. end
  279. size 9874